﻿using System.Windows.Forms;

namespace Kyoh.Lib.WinForms
{
    /// <summary><see cref="DataGridViewIconTextCell"/> を表示する <see cref="DataGridViewTextBoxColumn"/>の拡張。</summary>
    public class DataGridViewIconTextColumn : DataGridViewTextBoxColumn
    {
        private DataGridViewIconTextCell defaultCell = new DataGridViewIconTextCell();
        private DataGridViewCell templateCell = null;
        /// <summary>列の適切な表示幅を取得します。</summary>
        /// <param name="autoSizeColumnMode">対象列のサイズ調整を表す <see cref="DataGridViewAutoSizeColumnMode"/>。</param>
        /// <param name="fixedHeight">現在の行の高さに基づいて列の幅を計算する場合は <c>true</c>。行の高さが調整されることを見込んで幅を計算する場合は <c>false</c>。</param>
        /// <returns>列の適切な幅 (ピクセル単位)。</returns>
        public override int GetPreferredWidth(DataGridViewAutoSizeColumnMode autoSizeColumnMode, bool fixedHeight)
        {
            return base.GetPreferredWidth(autoSizeColumnMode, fixedHeight) + 22;
        }

        /// <summary>セルの外観のモデルとなるテンプレートを取得または設定します。</summary>
        public override DataGridViewCell CellTemplate
        {
            get
            {
                return templateCell ?? defaultCell;
            }
            set
            {
                templateCell = value;
                base.CellTemplate = value;
            }
        }
    }
}
